package com.junzhiit.nengji.dao;

import java.util.List;

import com.bainaeco.framework.base.dao.BaseDAO;
import com.junzhiit.nengji.bo.UserBO;
import com.junzhiit.nengji.bo.UserRelationshipsBO;
import com.junzhiit.nengji.bo.UserTakeCashBO;
import com.junzhiit.nengji.model.User;

public interface UserDAO extends BaseDAO<User> {

	public List<UserBO> findAll(int pageNumber, int maxPageRow, UserBO userBO);

	public int getTotalCount(UserBO userBO);
	
	public User checkOpenId(String openId);

	/**
	 * api 通过id查询用户信息 TODO
	 * 
	 * @author Qjen
	 * @time 2018年2月6日 下午3:31:32
	 * @return UserBO
	 *
	 */
	public UserBO getUserById(String id);
	
	/**
	 * TODO api 根据用户code取得用户信息
	 * @author Dlam
	 * @time 2018年10月17日 上午11:22:52
	 * @return UserBO
	 * 
	 */
	public UserBO getUserByUserCode(String code);
	
	public int checkMember(String userId);
	/**
	 * 
	 * TODO 检测邮箱是否存在
	 * 
	 * @author Qjen
	 * @time 2018年3月13日 下午2:05:48
	 * @return User
	 *
	 */
	public User checkEmail(String email);
	/**
	 * 
	 * TODO 检测手机号码是否存在
	 * 
	 * @author Qjen
	 * @time 2018年3月13日 下午2:06:19
	 * @return User
	 *
	 */
	public User checkMobilePhone(String mobilePhone);
	
	/**
	 * 
	 * TODO 根据ID查询用户信息
	 * @author PeterMo
	 * @time 2018年3月15日 上午10:53:52
	 * @return UserBO
	 */
	public UserBO findUserId(String id);
	
	/**
	 * 
	 * TODO 根据用户code查询用户信息
	 * @author PetetMo
	 * @time 2018年3月27日 下午1:53:08
	 * @return User
	 */
	public User getUserByCode(String code);
	
	/**
	 * 
	 * TODO 查询所有微信用户数量
	 * @author Zaki
	 * @time 2018年4月10日 上午9:19:07
	 * @return int
	 */
	public int getCountByUser();

	public List<UserRelationshipsBO> getUserRelationships(String id,Integer sortStatus,String param,Integer pageNumber,Integer maxPageRow);
	
	public int getUserRelationshipsCount(String Id,String params);

	public UserTakeCashBO getUserTakeCash(String id);
	
	/**
	 * 
	 * TODO 根据用户手机号码
	 * @author FEB
	 * @time 2018年5月17日 上午10:11:15
	 * @return User
	 */
	public User findByMobilePhone(String phone);
	
	/**
	 * 
	 * TODO 根据店铺ID查询绑定用户
	 * @author FEB
	 * @time 2018年5月18日 下午4:03:07
	 * @return List<User>
	 */
	public List<User> findByShopId(String shopId);
	
	/**
	 * 
	 * TODO 根据店铺ID查询绑定用户数
	 * @author FEB
	 * @time 2018年5月21日 下午1:45:18
	 * @return int
	 */
	public int findByShopIdCount(String shopId);
	
	/**
	 * 
	 * TODO 根据店铺ID查询绑定主账号信息
	 * @author FEB
	 * @time 2018年5月21日 下午1:45:03
	 * @return User
	 */
	public User findByShopIdIsMain(String shopId);
	
	/**
	 * 
	 * TODO 根据用户信息查询
	 * @author FEB
	 * @time 2018年5月21日 下午2:35:01
	 * @return List<User>
	 */
	public List<User> findByUser(User user);
	
	/**
	 * 
	 * TODO 根据店铺ID查询用户主账号
	 * @author PeterMo
	 * @time 2018年6月19日 下午9:26:34
	 * @return User
	 */
	public User findUserIsMain(String shopId);
	
	public List<User> findUserList();
	
	/**
	 * 
	 * TODO 获取所有用户列表
	 * @author Harry
	 * @time 2018年9月11日下午7:44:27
	 * @return List<User>
	 */
	public List<UserBO> queryUserList(UserBO userBO,Integer pageNumber, Integer maxPageRow);
	
	/**
	 * 
	 * TODO 获取所有用户总数
	 * @author Harry
	 * @time 2018年9月20日下午2:52:37
	 * @return Integer
	 */
	public Integer getUserCount(UserBO userBO);
}
